Tengo una lógica simple para verificar qué menú está activo.
Estoy usando:
const [activeMenu, setActiveMenu] = useState("0");para el estado
y usando la abreviatura if:
className={activeMenu === "2" && "active"}className={activeMenu === "1" ? "active" : ""}pero el primero me dio:
react_devtools_backend.js:4026 Warning: Received `false` for a non-boolean attribute `className`. If you want to write it to the DOM, pass a string instead: className="false" or className={value.toString()}. Mi pregunta es ¿por qué el primero me dio esa advertencia? pero mi sitio sigue funcionando a las mil maravillas. ¿Por qué dice que recibió false ?
si activeMenu no es 2 , entonces className sería false (no válido)
className={activeMenu === "2" && "active"}con este
className={activeMenu === "2" ? "active" : ""} si activeMenu no es 2 , entonces className sería una cadena vacía (válida)
Entonces, es básicamente como dice el error. className no es un atributo booleano.
ejecute el siguiente código en la consola, es básicamente lo mismo que su código. Devolverá false
false && "active" !== null